<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Revision History of CMSIS-DSP</title>
<title>CMSIS-DSP: Revision History of CMSIS-DSP</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-DSP
   &#160;<span id="projectnumber">Version 1.7.0</span>
   </div>
   <div id="projectbrief">CMSIS DSP Software Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li><a href="modules.html"><span>Reference</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('ChangeLog_pg.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Revision History of CMSIS-DSP </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><table  class="cmtable" summary="Revision History">
<tr>
<th>Version </th><th>Description  </th></tr>
<tr>
<td>V1.7.0 </td><td><p class="starttd">New Neon implementations of f32 functions</p>
<ul>
<li>Can be enabled with macros ARM_MATH_NEON and ARM_MATH_NEON_EXPERIMENTAL</li>
</ul>
<p>Python wrapper compatible with Numpy</p>
<ul>
<li>DSP/PythonWrapper/README.md is explaining how to build the wrapper</li>
</ul>
<p>Preliminary cmake build</p>
<ul>
<li>DSP/README.md is explaining how to use it. This first version is restricted to AC6 toolchain and assume (hard coded path) that ArmDS is used. Future versions will make it easier to switch toolchains.</li>
</ul>
<p>Modified <a class="el" href="arm__math_8h.html">arm_math.h</a></p>
<ul>
<li>Removed dependance on cores. It is no more testing for some specific cores but is now using features like ARM_MATH_LOOPUNROLL (see comments in <a class="el" href="arm__math_8h.html">arm_math.h</a>)</li>
<li>Deprecated __SIMD32 and introduced new functions for SIMD accesses.</li>
</ul>
<p>Added compilation flags for FFT:</p>
<ul>
<li>It is now possible to include only the tables required for FFTs. It is explained in DSP/README.md since it is simpler to use it from the cmake (which is defining the right macros). But the macros can also be defined without cmake.</li>
</ul>
<p class="endtd"></p>
</td></tr>
<tr>
<td>V1.6.0 </td><td><p class="starttd">Reworked DSP library source files</p>
<ul>
<li>added macro ARM_MATH_LOOPUNROLL</li>
<li>removed macro UNALIGNED_SUPPORT_DISABLE</li>
<li>added const-correctness</li>
<li>replaced SIMD pointer construct with memcopy solution</li>
<li>replaced macro combination "CMSIS_INLINE __STATIC_INLINE with "__STATIC_FORCEINLINE"</li>
</ul>
<p>Reworked DSP library documentation</p>
<p>Changed DSP folder structure</p>
<ul>
<li>moved DSP libraries to ./DSP/Lib</li>
</ul>
<p>ARM DSP Libraries are built with ARMCLANG</p>
<p class="endtd">Added DSP Libraries source variant   </p>
</td></tr>
<tr>
<td>V1.5.4 </td><td><p class="starttd">Updated IAR projects</p>
<p class="endtd">Note: binaries NOT rebuild!   </p>
</td></tr>
<tr>
<td>V1.5.3 </td><td><p class="starttd">Note: binaries NOT rebuild!</p>
<p>Merged PullRequests</p>
<ul>
<li>#439, #430, #369, #265, #166</li>
</ul>
<p>Modified <a class="el" href="arm__math_8h.html">arm_math.h</a></p>
<ul>
<li>reworked macros ARM_MATH_CMx</li>
<li>removed macros __FPU_USED, __DSP_PRESENT</li>
<li>used different include files</li>
</ul>
<p class="endtd">Modified source files (because of new <a class="el" href="arm__math_8h.html">arm_math.h</a>)</p>
<ul>
<li><a class="el" href="arm__biquad__cascade__df2T__f32_8c.html">FilteringFunctions\arm_biquad_cascade_df2T_f32.c</a></li>
<li><a class="el" href="arm__biquad__cascade__df2T__f64_8c.html">FilteringFunctions\arm_biquad_cascade_df2T_f64.c</a></li>
<li><a class="el" href="arm__biquad__cascade__stereo__df2T__f32_8c.html">FilteringFunctions\arm_biquad_cascade_stereo_df2T_f32.c</a></li>
<li><a class="el" href="arm__conv__partial__q15_8c.html">FilteringFunctions\arm_conv_partial_q15.c</a></li>
<li><a class="el" href="arm__correlate__q15_8c.html">FilteringFunctions\arm_correlate_q15.c</a></li>
<li><a class="el" href="arm__fir__f32_8c.html">FilteringFunctions\arm_fir_f32.c</a></li>
<li><a class="el" href="arm__mat__scale__q31_8c.html">MatrixFunctions\arm_mat_scale_q31.c</a></li>
<li><a class="el" href="arm__rms__q31_8c.html">StatisticsFunctions\arm_rms_q31.c</a></li>
<li>TransformFunctions\arm_bitreversal2.S</li>
<li><a class="el" href="arm__cfft__radix4__q31_8c.html">TransformFunctions\arm_cfft_radix4_q31.c</a> Reworked DSP_Lib_TestSuite   </li>
</ul>
</td></tr>
<tr>
<td>V1.5.2 </td><td>Modified <a class="el" href="arm__math_8h.html">arm_math.h</a><ul>
<li>fixed GNU Compiler specific diagnostics.</li>
<li>moved __SSAT and __USAT to CMSIS-Core   </li>
</ul>
</td></tr>
<tr>
<td>V1.5.1 </td><td><p class="starttd">Changed copyright note.</p>
<p class="endtd">Added ARMv8M DSP libraries.   </p>
</td></tr>
<tr>
<td>V1.5.0 </td><td><p class="starttd">Modified <a class="el" href="arm__math_8h.html">arm_math.h</a></p>
<ul>
<li>removed macro TABLE_SIZE.</li>
<li>changed preprocessor conditions to select functions instead of SIMD instruction for Cortex-M3.</li>
</ul>
<p class="endtd">Modified <a class="el" href="arm__const__structs_8c.html">arm_const_structs.c</a></p>
<ul>
<li>Added structure instances for the RFFT functions (equivalent to CFFT structures).   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.10 (no source code change [still labeled 1.4.5]) </td><td><p class="starttd">Modified <a class="el" href="arm__sin__cos__f32_8c.html">arm_sin_cos_f32.c</a></p>
<ul>
<li>corrected <a class="el" href="group__SinCos.html#ga4420d45c37d58c310ef9ae1b5fe58020">arm_sin_cos_f32()</a> for negative numbers smaller than e-4f.</li>
</ul>
<p class="endtd">Modified <a class="el" href="arm__var__f32_8c.html">arm_var_f32.c</a></p>
<ul>
<li>improved numerical stability for <a class="el" href="group__variance.html#gaae455544f0c8ac92469a1e25d3906515">arm_var_f32()</a>.   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.9 (no source code change [still labeled 1.4.5]) 2016/09/26 </td><td><p class="starttd">Modified <a class="el" href="arm__mat__mult__fast__q15_8c.html">arm_mat_mult_fast_q15.c</a>, <a class="el" href="arm__mat__mult__fast__q31_8c.html">arm_mat_mult_fast_q31.c</a></p>
<ul>
<li>performance optimizations for <a class="el" href="group__MatrixMult.html#ga08f37d93a5bfef0c5000dc5e0a411f93">arm_mat_mult_fast_q15()</a> and <a class="el" href="group__MatrixMult.html#ga2785e8c1b785348b0c439b56aaf585a3">arm_mat_mult_fast_q31()</a>.</li>
</ul>
<p>Modified <a class="el" href="arm__conv__partial__q15_8c.html">arm_conv_partial_q15.c</a></p>
<ul>
<li>corrected <a class="el" href="group__PartialConv.html#ga09b1f207980df75c2dcf01b1d3c2006f">arm_conv_partial_q15()</a> for Cortex-M7 based cores.</li>
</ul>
<p>Modified <a class="el" href="arm__conv__q15_8c.html">arm_conv_q15.c</a></p>
<ul>
<li>corrected <a class="el" href="group__Conv.html#ga372d3fd79b107dc6b12163a00c22da18">arm_conv_q15()</a> for Cortex-M7 based cores.</li>
</ul>
<p class="endtd">Modified <a class="el" href="arm__correlate__q15_8c.html">arm_correlate_q15.c</a></p>
<ul>
<li>corrected <a class="el" href="group__Corr.html#ga8fc4e632ab08b28435ff62e7eb65f508">arm_correlate_q15()</a> for Cortex-M7 based cores.   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.8 (no source code change [still labeled 1.4.5]) 2015/12/18 </td><td><p class="starttd">Modified <a class="el" href="arm__math_8h.html">arm_math.h</a>, arm_bitreversal2.S</p>
<ul>
<li>corrected <a class="el" href="group__sin.html#gae164899c4a3fc0e946dc5d55555fe541" title="Fast approximation to the trigonometric sine function for floating-point data. ">arm_sin_f32()</a> for very small negative input values.</li>
</ul>
<p>Modified <a class="el" href="arm__sin__f32_8c.html">arm_sin_f32.c</a></p>
<ul>
<li>Updated Texas Instruments Arm Compiler support.</li>
</ul>
<p class="endtd">Updated documentation</p>
<ul>
<li>function <a class="el" href="group__RealFFT.html#ga180d8b764d59cbb85d37a2d5f7cd9799">arm_rfft_fast_f32</a>.   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.7 (no source code change [still labeled 1.4.5]) 2015/10/20 </td><td><p class="starttd">Modified <a class="el" href="arm__math_8h.html">arm_math.h</a></p>
<ul>
<li>Added explicit type casts to remove compiler warnings.</li>
<li>Supressed irrelevant warnings for toolchain GCC.</li>
</ul>
<p class="endtd">Updated documentation</p>
<ul>
<li>functions <a class="el" href="group__cos.html#gace15287f9c64b9b4084d1c797d4c49d8">arm_cos_f32</a>, <a class="el" href="group__sin.html#gae164899c4a3fc0e946dc5d55555fe541">arm_sin_f32</a> use table lookup combined with linear interpolation (since V1.4.2). This is now documented.   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.6 (no source code change [still labeled 1.4.5]) 2015/08/26 </td><td>Modified <a class="el" href="arm__math_8h.html">arm_math.h</a><ul>
<li>Updated function <a class="el" href="group__SQRT.html#ga5f37f479666ee8ff9711b334286c60ed">arm_sqrt_f32</a> for use with IAR.   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.5 2015/03/19 </td><td><p class="starttd">Added support for the Cortex-M7 processor</p>
<p>Fixed bug in <a class="el" href="arm__mat__inverse__f32_8c.html">arm_mat_inverse_f32.c</a> and <a class="el" href="arm__mat__inverse__f64_8c.html">arm_mat_inverse_f64.c</a>. They weren't properly handling diagonal matrices.</p>
<p><a class="el" href="arm__cfft__f32_8c.html">arm_cfft_f32.c</a> - help documentation updated</p>
<p class="endtd">Updated documentation to show deprecated functions   </p>
</td></tr>
<tr>
<td>V1.4.4 2014/07/31 </td><td><p class="starttd">Added the following new files:</p>
<ul>
<li><a class="el" href="arm__biquad__cascade__stereo__df2T__f32_8c.html">arm_biquad_cascade_stereo_df2T_f32.c</a></li>
<li><a class="el" href="arm__biquad__cascade__stereo__df2T__init__f32_8c.html">arm_biquad_cascade_stereo_df2T_init_f32.c</a></li>
<li><a class="el" href="arm__biquad__cascade__df2T__f64_8c.html">arm_biquad_cascade_df2T_f64.c</a></li>
<li><a class="el" href="arm__biquad__cascade__df2T__init__f64_8c.html">arm_biquad_cascade_df2T_init_f64.c</a></li>
<li><a class="el" href="arm__mat__inverse__f64_8c.html">arm_mat_inverse_f64.c</a></li>
<li><a class="el" href="arm__cfft__q15_8c.html">arm_cfft_q15.c</a></li>
<li><a class="el" href="arm__cfft__q31_8c.html">arm_cfft_q31.c</a></li>
</ul>
<p class="endtd">Optimizations to the following files:</p>
<ul>
<li><a class="el" href="arm__biquad__cascade__df2T__f32_8c.html">arm_biquad_cascade_df2T_f32.c</a></li>
<li><a class="el" href="arm__fir__f32_8c.html">arm_fir_f32.c</a></li>
<li><a class="el" href="arm__fir__fast__q31_8c.html">arm_fir_fast_q31.c</a></li>
<li><a class="el" href="arm__fir__q7_8c.html">arm_fir_q7.c</a></li>
<li><a class="el" href="arm__cfft__f32_8c.html">arm_cfft_f32.c</a></li>
<li><a class="el" href="arm__cfft__radix4__q31_8c.html">arm_cfft_radix4_q31.c</a></li>
<li><a class="el" href="arm__cfft__radix4__q15_8c.html">arm_cfft_radix4_q15.c</a></li>
<li><a class="el" href="arm__rfft__q31_8c.html">arm_rfft_q31.c</a></li>
<li><a class="el" href="arm__rfft__q15_8c.html">arm_rfft_q15.c</a>   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.3 2014/03/12 </td><td><p class="starttd">Undid changes to <a class="el" href="arm__biquad__cascade__df1__q31_8c.html">arm_biquad_cascade_df1_q31.c</a></p>
<p>Added support for COSMIC</p>
<p>Changed 'short' to 'q15_t' where appropriate</p>
<p>Fixed <a class="el" href="arm__conv__partial__fast__q15_8c.html">arm_conv_partial_fast_q15.c</a> for UNALIGNED_SUPPORT_DISABLE</p>
<p>Fixed <a class="el" href="arm__mat__cmplx__mult__q15_8c.html">arm_mat_cmplx_mult_q15.c</a> for UNALIGNED_SUPPORT_DISABLE</p>
<p>Fixed <a class="el" href="arm__conv__partial__opt__q7_8c.html">arm_conv_partial_opt_q7.c</a> for UNALIGNED_SUPPORT_DISABLE</p>
<p>Restored the internal fftlen of 16 to <a class="el" href="arm__rfft__fast__init__f32_8c.html">arm_rfft_fast_init_f32.c</a></p>
<p class="endtd">Updated core_xxx.h files to newer versions from ARM   </p>
</td></tr>
<tr>
<td>V1.4.2 2013/10/16 </td><td><p class="starttd">Moved const structures from <a class="el" href="arm__const__structs_8h.html">arm_const_structs.h</a> to <a class="el" href="arm__const__structs_8c.html">arm_const_structs.c</a></p>
<p>Rfft_fast_f32 no longer allows fft length of 16 as it wouldn't have worked anyways</p>
<p>Partial convolution was producing the wrong results in some cases</p>
<p>arm_lms_q31 and q15 now saturate the results in the M0 code to match the M3 &amp; M4 code</p>
<p>Rfft_q15 and q31 had potential overflow issues resolved</p>
<p><a class="el" href="arm__biquad__cascade__df1__q31_8c.html">arm_biquad_cascade_df1_q31.c</a> had a typo which resulted in incorrect outputs</p>
<p>fast math sine and cosine now use linear interpolation</p>
<p>controller sin/cos now uses a more accurate interpolation algorithm</p>
<p>arm_mat_inverse was reading outside its input array</p>
<p>arm_cmplx_dot_prod was incorrect</p>
<p>switched some incorrect usages of __ssat to clip_q63_to_q31</p>
<p>changed var &amp; std q31 to downshift input data by 8</p>
<p>var q31 &amp; q15 no longer output larger data types</p>
<p><a class="el" href="arm__mat__cmplx__mult__q15_8c.html">arm_mat_cmplx_mult_q15.c</a> was done incorrectly for big vs little endian</p>
<p><a class="el" href="arm__mat__mult__q31_8c.html">arm_mat_mult_q31.c</a> was inconsistent with the other multiplies, so added saturation</p>
<p class="endtd">arm_conv_partial_q15 had an incorrect comparison between signed &amp; unsigned values   </p>
</td></tr>
<tr>
<td>V1.4.1 2013/02/20 </td><td><p class="starttd">Updated licenses in headers to 2013</p>
<p>Fixed ALIGN4 macro in <a class="el" href="arm__math_8h.html">arm_math.h</a></p>
<p>Added files to Cortex-M0 projects so that all projects have same file list</p>
<p class="endtd">Fixed bugs in</p>
<ul>
<li>arm_biquad_cascade_d2fT_f32.c</li>
<li>arm_cfft_radix2_q31</li>
<li>arm_cfft_radix2_f32</li>
<li><a class="el" href="arm__math_8h.html">arm_math.h</a> (arm_pid functions)</li>
<li><a class="el" href="arm__iir__lattice__q31_8c.html">arm_iir_lattice_q31.c</a>   </li>
</ul>
</td></tr>
<tr>
<td>V1.4.0 2013/01/09 </td><td><p class="starttd">Updated with more optimizations, bug fixes and new license information in headers</p>
<p>Optimized functions:</p>
<ul>
<li>arm_biquad_cascade_df2T_f32</li>
<li>arm_biquad_cascade_df1_q31</li>
<li>arm_fir_f32</li>
<li>arm_fir_fast_q31</li>
<li>arm_cfft_f32</li>
<li>arm_cfft_radix2_q31</li>
<li>arm_rfft_fast_f32 (new function)</li>
</ul>
<p>Fixed compiler warnings in <a class="el" href="arm__math_8h.html">arm_math.h</a> for comparing signed and unsigned ints</p>
<p>Fixed a saturation bug in arm_rms_q15</p>
<p>Simplified the code in arm_sin_cos_q31</p>
<p>Added a preprocessor directive to treat the Cortex M0+ just like the Cortex M0</p>
<p class="endtd">The following functions were deprecated and will be removed in a future version</p>
<ul>
<li>arm_cfft_radix2_f32</li>
<li>arm_cfft_radix2_init_f32</li>
<li>arm_cfft_radix4_f32</li>
<li>arm_cfft_radix4_init_f32   </li>
</ul>
</td></tr>
<tr>
<td>V1.3.0 </td><td><p class="starttd">Added CMSIS DSP Software Library</p>
<p>The CMSIS DSP Software Library is a suite of common signal processing functions targeted to Cortex-M processor based microcontrollers. Even though the code has been specifically optimized towards using the extended DSP instruction set of the Cortex-M4 processor, the library can be compiled for any Cortex-M processor.</p>
<p>For more information please see CMSIS DSP Library documentation. Added Cortex-M4 Core Support</p>
<p>Additional folder CM4, containing the Cortex-M4 core support files, has been added. CM0 CM3 CM4 CoreSupport DeviceSupport</p>
<p>New naming for Core Support Files</p>
<p class="endtd">The new Core Support Files are:</p>
<ul>
<li>core_cm#.h (# = 0, 3, 4)</li>
<li>core_cmFunc.h (Cortex-M Core Register access functions)</li>
<li>core_cmInstr.h (Cortex-M Core instructions)</li>
<li>core_cm4_simd.h (Cortex-M4 SIMD instructions)   </li>
</ul>
</td></tr>
<tr>
<td>V1.2.0 </td><td><p class="starttd">Removed CMSIS Middelware packages</p>
<p>CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found. SystemFrequency renamed to SystemCoreClock</p>
<p>The variable name SystemCoreClock is more precise than SystemFrequency because the variable holds the clock value at which the core is running. Changed startup concept</p>
<p>The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit from main) has the weakness that it does not work for controllers which need a already configuerd clock system to configure the external memory controller.</p>
<p>Changed startup concept</p>
<ul>
<li>SystemInit() is called from startup file before premain.</li>
<li>SystemInit() configures the clock system and also configures an existing external memory controller.</li>
<li>SystemInit() must not use global variables.</li>
<li>SystemCoreClock is initialized with a correct predefined value.</li>
<li>Additional function void SystemCoreClockUpdate (void) is provided.</li>
<li>SystemCoreClockUpdate() updates the variable SystemCoreClock and must be called whenever the core clock is changed.</li>
<li>SystemCoreClockUpdate() evaluates the clock register settings and calculates the current core clock.</li>
</ul>
<p>Advanced Debug Functions</p>
<p>ITM communication channel is only capable for OUT direction. To allow also communication for IN direction a simple concept is provided.</p>
<ul>
<li>Global variable volatile int ITM_RxBuffer used for IN data.</li>
<li>Function int ITM_CheckChar (void) checks if a new character is available.</li>
<li>Function int ITM_ReceiveChar (void) retrieves the new character.</li>
</ul>
<p>For detailed explanation see file CMSIS debug support.htm.</p>
<p>Core Register Bit Definitions</p>
<p>Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the defines correspond with the Cortex-M Technical Reference Manual.</p>
<p>e.g. SysTick structure with bit definitions</p>
<div class="fragment"><div class="line"></div>
<div class="line"><span class="keyword">typedef</span> <span class="keyword">struct</span></div>
<div class="line">{</div>
<div class="line">  __IO uint32_t CTRL;                         </div>
<div class="line">  __IO uint32_t LOAD;                         </div>
<div class="line">  __IO uint32_t VAL;                          </div>
<div class="line">  __I  uint32_t CALIB;                        </div>
<div class="line">} SysTick_Type;</div>
<div class="line"></div>
<div class="line"><span class="comment">/* SysTick Control / Status Register Definitions */</span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_COUNTFLAG_Pos     16                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_COUNTFLAG_Msk    (1ul &amp;lt;&amp;lt; SysTick_CTRL_COUNTFLAG_Pos)      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_CLKSOURCE_Pos      2                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_CLKSOURCE_Msk     (1ul &amp;lt;&amp;lt; SysTick_CTRL_CLKSOURCE_Pos)     </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_TICKINT_Pos        1                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_TICKINT_Msk       (1ul &amp;lt;&amp;lt; SysTick_CTRL_TICKINT_Pos)       </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_ENABLE_Pos         0                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CTRL_ENABLE_Msk        (1ul &amp;lt;&amp;lt; SysTick_CTRL_ENABLE_Pos)        </span></div>
<div class="line"><span class="preprocessor"></span><span class="comment">/* SysTick Reload Register Definitions */</span><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define SysTick_LOAD_RELOAD_Pos         0                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_LOAD_RELOAD_Msk        (0xFFFFFFul &amp;lt;&amp;lt; SysTick_LOAD_RELOAD_Pos) </span></div>
<div class="line"><span class="preprocessor"></span><span class="comment">/* SysTick Current Register Definitions */</span><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define SysTick_VAL_CURRENT_Pos         0                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_VAL_CURRENT_Msk        (0xFFFFFFul &amp;lt;&amp;lt; SysTick_VAL_CURRENT_Pos) </span></div>
<div class="line"><span class="preprocessor"></span><span class="comment">/* SysTick Calibration Register Definitions */</span><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define SysTick_CALIB_NOREF_Pos        31                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CALIB_NOREF_Msk       (1ul &amp;lt;&amp;lt; SysTick_CALIB_NOREF_Pos)         </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CALIB_SKEW_Pos         30                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CALIB_SKEW_Msk        (1ul &amp;lt;&amp;lt; SysTick_CALIB_SKEW_Pos)          </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CALIB_TENMS_Pos         0                                      </span></div>
<div class="line"><span class="preprocessor">#define SysTick_CALIB_TENMS_Msk        (0xFFFFFFul &amp;lt;&amp;lt; SysTick_VAL_CURRENT_Pos) </span></div>
<div class="line"><span class="preprocessor"> </span><span class="comment">/* end of group CMSIS_CM3_SysTick */</span><span class="preprocessor"></span></div>
</div><!-- fragment --><p>DoxyGen Tags</p>
<p>DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation using DoxyGen. Folder Structure</p>
<p class="endtd">The folder structure is changed to differentiate the single support packages. </p>
<pre class="fragment">CM0
CM3
    CoreSupport
    DeviceSupport
        Vendor
            Device
                Startup
                    Toolchain
                    Toolchain
                    ...
            Device
            ...
        Vendor
        ...
    Example (optional)
        Toolchain
            Device
            Device
            ...
        Toolchain
        ...
Documentation
</pre>   </td></tr>
<tr>
<td>V1.1.0 2012/02/15 </td><td>Updated with more optimizations, bug fixes and minor API changes.   </td></tr>
<tr>
<td>V1.0.11 2011/10/18 </td><td>Bug Fix in conv, correlation, partial convolution.   </td></tr>
<tr>
<td>V1.0.10 2011/7/15 </td><td>Big Endian support added and Merged M0 and M3/M4 Source code.   </td></tr>
<tr>
<td>V1.0.3 2010/11/29 </td><td>Re-organized the CMSIS folders and updated documentation.   </td></tr>
<tr>
<td>V1.0.2 2010/11/11 </td><td>Documentation updated.   </td></tr>
<tr>
<td>V1.0.1 2010/10/05 </td><td>Production release and review comments incorporated.   </td></tr>
<tr>
<td>V1.0.0 2010/09/20 </td><td>Production release and review comments incorporated.   </td></tr>
<tr>
<td>V0.0.9 2010/08/27 </td><td>Added files:<ul>
<li><a class="el" href="arm__biquad__cascade__df1__fast__q15_8c.html">arm_biquad_cascade_df1_fast_q15.c</a></li>
<li><a class="el" href="arm__biquad__cascade__df1__fast__q31_8c.html">arm_biquad_cascade_df1_fast_q31.c</a></li>
<li><a class="el" href="arm__fir__fast__q31_8c.html">arm_fir_fast_q31.c</a></li>
<li><a class="el" href="arm__fir__fast__q15_8c.html">arm_fir_fast_q15.c</a>   </li>
</ul>
</td></tr>
<tr>
<td>V0.0.7 2010/06/10 </td><td>Misra-C changes done   </td></tr>
<tr>
<td>V0.0.5 2010/04/26 </td><td>incorporated review comments and updated with latest CMSIS layer   </td></tr>
<tr>
<td>V0.0.3 2010/03/10 DP </td><td>Initial version   </td></tr>
</table>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Wed Jul 10 2019 15:20:39 for CMSIS-DSP Version 1.7.0 by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
	-->
	</li>
  </ul>
</div>
</body>
</html>
